package com.adams.sys.menu.service;

import java.util.List;

import com.adams.access.db.bean.Menu;
import com.adams.utils.Page;

/**
 * 
 * 
 * File Name : MenuService.java
 * 
 * @Description : 菜单服务类,提供菜单的增、删、改和查功能
 * @author 902990封文进
 */
public interface MenuService
{

	/**
	 * 
	 * Description : 添加菜单
	 * 
	 * @param menu
	 * 
	 */
	public void createMenu(Menu menu);

	/**
	 * 
	 * Description : 添加菜单
	 * 
	 * @param menuCode
	 * @param menuName
	 * @param url
	 * @param parentCode
	 * 
	 */
	public void createMenu(String menuCode, String menuName, String url,
			String parentCode);

	/**
	 * 
	 * Description : 更新菜单
	 * 
	 * @param menu
	 * 
	 */
	public void updateMenu(Menu menu);

	/**
	 * 
	 * Description : 根据菜单码和菜单名更新菜单
	 * 
	 * @param menuCode
	 * @param menuName
	 * 
	 */
	public void updateMenu(String menuCode, String menuName);

	/**
	 * 
	 * Description : 删除菜单
	 * 
	 * @param menu
	 * 
	 */
	public void deleteMenu(Menu menu);

	/**
	 * 
	 * Description : 根据菜单码删除菜单
	 * 
	 * @param menuCode
	 * 
	 */
	public void deleteMenu(String menuCode);

	/**
	 * 
	 * Description : 根据编号查询菜单
	 * 
	 * @param id
	 * @return Menu
	 * 
	 */
	public Menu queryById(Long id);

	/**
	 * 
	 * Description : 根据菜单码查询菜单
	 * 
	 * @param code
	 * @return Menu
	 * 
	 */
	public Menu queryByCode(String code);

	/**
	 * 
	 * Description : 根据分页查询所有菜单
	 * 
	 * @param page
	 * @return Page<Menu>
	 * 
	 */
	public Page<Menu> queryAllByPage(Page<Menu> page);

	/**
	 * Description : 查询所有的子菜单列表
	 * 
	 * @return
	 * 
	 */
	public List<Menu> queryAllSubMenus();

	/**
	 * 
	 * Description : 根据父菜单编号查询子菜单列表
	 * 
	 * @param parentId
	 * @return List<Menu>
	 * 
	 */
	public List<Menu> querySubMenus(Long parentId);

	/**
	 * 
	 * Description : 获取所有菜单
	 * 
	 * @return
	 * 
	 */
	public List<Menu> queryAll();
	
	/**
	 * Description:获取最大排序值
	 * @return
	 */
	public Integer queryMaxOrdinal();
}
